﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.Windows.Media.Animation;

namespace SystemHelperLibrary.WPF.Controls
{
	/// <summary>
	/// Interaction logic for Clock.xaml
	/// </summary>
	public partial class Clock : ContentControl
	{
		private DispatcherTimer m_dayTimer;

		public Clock()
		{
			InitializeComponent();
			this.Loaded += new RoutedEventHandler(Clock_Loaded);
		}

		void Clock_Loaded(object sender, RoutedEventArgs e)
		{
			// set the datacontext to be today's date
			DateTime now = DateTime.Now;
			DataContext = now.Day.ToString();

			// then set up a timer to fire at the start of tomorrow, so that we can update
			// the datacontext
			m_dayTimer = new DispatcherTimer();
			m_dayTimer.Interval = new TimeSpan(1, 0, 0, 0) - now.TimeOfDay;
			m_dayTimer.Tick += new EventHandler(OnDayChange);
			m_dayTimer.Start();

			// finally, seek the timeline, which assumes a beginning at midnight, to the appropriate
			// offset
			Storyboard sb = (Storyboard)PodClock.FindResource("sb");
			sb.Begin(PodClock, HandoffBehavior.SnapshotAndReplace, true);
			sb.Seek(PodClock, now.TimeOfDay, TimeSeekOrigin.BeginTime);
		}
		private void OnDayChange(object sender, EventArgs e)
		{
			// date has changed, update the datacontext to reflect today's date
			DateTime now = DateTime.Now;
			DataContext = now.Day.ToString();
			m_dayTimer.Interval = new TimeSpan(1, 0, 0, 0);
		}


	}
}
